1 2 * ÂY ÄALE ÒAY 3 * Ä.ÒÁÙ1 ON ÇÅNIE 4 * ÄALE ÒAY ON ÕÓ ÂÌÕÅÓ ÂÂÓ * (219) 762-4612 OR (219) 887-2206 5 * ÆIDO-ÎET 1:230/11 6 7 * ÖÄà PROGRAMMING 8 * INCLUDES ROUTINES TO SELECT 9 * A DIFFERENT SCREEN TO DISPLAY 10 * TO SAVE THE CONTENTS OF A WINDOW 11 * TO A BUFFER IN BANK ONE 12 * AND TO INITIALIZE 64K ÖÄà RAM 13 14 ÏÒÇ $1300 15 16 ÒÅÁÄÒÅÇ = $ÃÄÄÁ 17 ×ÒÉÔÅÒÅÇ = $ÃÄÃà 18 ÓÃÒÏÒÇ = $ÃÃ5 19 ÓÃÔÏÐ = $Å5 20 ÓÃÌÆ = $Å6 21 ÃÌÒ = $51Æ8 22 ÓÔÁÌÏÎÇ = $ÆÆ77 23 ÌÄÁÌÏÎÇ = $ÆÆ74 24 ÉÎÉÔ80 = $ÃÅ0à 25 26 * ÔHESE ADDRESSES ARE USED BY THE SCREEN EDITOR 27 * TO DETERMINE WHERE TO WRITE IN ÖÄà MEMORY 28 * WHEN YOU PRINT ANYTHING. 29 * ÔHEY ARE NOT UPDATED WHEN YOU CHANGE THE ADDRESSES 30 * HELD IN THE VDC REGISTERS. ÙOU MUST CHANGE THESE 31 * YOURSELF. ÔHIS MAKES IT POSSIBLE TO BE WRITING 32 * TO A NON ACTIVE SCREEN. 33 34 ÖÍ3 = $Á2Å ;STARTING PAGE VDC CHAR ADDRESS 35 ÖÍ4 = $Á2Æ ;STARTING PAGE VDC ATTR ADDRESS 36 37 * ÐOINTER TO BUFFER AREA TO STORE 38 * WINDOW CONTENTS 39 40 ÐÏÉÎÔÌÏ = $ÆÁ 41 ÐÏÉÎÔÈÉ = $Æ 42 43 * THIS ROUTINE CHANGES THE ADDRESS 44 * THAT THE VDC CHIP ADDRESSES AS THE 45 * CURRENT DISPLAY 46 * CALL WITH SYS 4864,A 47 * A= THE HI BYTE OF THE VDC RAM ADDRESS 48 * YOU WANT TO BE ACTIVE 49 1300: 8Ä ÃÆ 14 50 ÓÔÁ ÓÃÁÄÄÒ 1303: Á2 0à 51 ÌÄØ #$0à ;SET REGISTER 12 1305: 20 Ãà ÃÄ 52 ÊÓÒ ×ÒÉÔÅÒÅÇ 1308: Á9 00 53 ÌÄÁ #$00 130Á: Å8 54 ÉÎØ ;SET REG 13 130Â: 20 Ãà ÃÄ 55 ÊÓÒ ×ÒÉÔÅÒÅÇ 130Å: ÁÄ ÃÆ 14 56 ÌÄÁ ÓÃÁÄÄÒ 1311: 18 57 ÃÌà 1312: 69 08 58 ÁÄà #$08 1314: Á2 14 59 ÌÄØ #$14 ;SET REGISTER 20 1316: 20 Ãà ÃÄ 60 ÊÓÒ ×ÒÉÔÅÒÅÇ 1319: Á9 00 61 ÌÄÁ #$00 131Â: Å8 62 ÉÎØ ;SET REG 21 131Ã: 20 Ãà ÃÄ 63 ÊÓÒ ×ÒÉÔÅÒÅÇ 131Æ: 60 64 ÒÔÓ 1320: ÅÁ 65 ÎÏÐ 1321: ÅÁ 66 ÎÏÐ 1322: ÅÁ 67 ÎÏÐ 68 69 * ÂECAUSE YOU MAY WANT TO WRITE TO A NON ACTIVE SCREEN 70 * THIS IS A SEPERATE ROUTINE. ÙOU CAN CHANGE THE ADDRESS 71 * HERE WITHOUT CHANGING THE VDC REGISTERS. ÔHE SYNTAX 72 * IS SYS 4899,A. 73 * A = HI BYTE OF VDC CHARACTER INFO 74 * IF YOU CHANGE THE VALUES IN THE ÖÄà REGISTERS 75 * THE SCREEN EDITOR WON'T PRINT ON THAT SCREEN 76 * UNTIL YOU RESET THESE ADDRESSES. 77 1323: 8Ä 2Å 0Á 78 ÓÔÁ ÖÍ3 1326: 18 79 ÃÌà 1327: 69 08 80 ÁÄà #$08 1329: 8Ä 2Æ 0Á 81 ÓÔÁ ÖÍ4 132Ã: 60 82 ÒÔÓ 132Ä: ÅÁ 83 ÎÏÐ 132Å: ÅÁ 84 ÎÏÐ 132Æ: ÅÁ 85 ÎÏÐ 86 87 * MOVE STRING STORAGE HI POINT DOWN TO 88 * ALLOCATE BUFFER AREA IN BANK ONE 89 * FOR STORAGE OF WINDOW AREA CONTENTS 90 * ALSO PLACES HI AND LO BYTE OF BUFFER 91 * AREA INTO ÂÕÆÆÌÏ AND ÂÕÆÆÈÉ 92 * THIS MUST BE CALLED BEFORE USING THE REST OF 93 * THE ROUTINE TO SET THE BUFFER AREA ADDRESS 94 * CALL WITH SYS 4912,A,X 95 * A=LO BYTE OF ADDRESS 96 * X=HI BYTE OF ADDRESS 97 1330: 85 39 98 ÓÔÁ $39 1332: 8Ä ÄÁ 14 99 ÓÔÁ ÂÕÆÆÌÏ 1335: 86 3Á 100 ÓÔØ $3Á 1337: 8Å Ä 14 101 ÓÔØ ÂÕÆÆÈÉ 133Á: 20 Æ8 51 102 ÊÓÒ ÃÌÒ 133Ä: 60 103 ÒÔÓ 104 105 * THIS ROUTINE SAVES/RECALLS THE CONTENTS 106 * OF A WINDOW ON THE 80 COL SCREEN 107 * THE DATA IS STORED IN A BUFFER IN 108 * BANK ONE. CALL WITH SYS 4926,A 109 * IF A=0 THEN THE LAST WINDOW DEFINED 110 * WILL BE SAVED. IF A=1 THEN THE CONTENTS 111 * WILL BE RESTORED. 112 113 * ÆLAG FOR READ/WRITE 114 115 ÆÌÁÇ = $Æà ;0 MEANS READ 116 ;1 MEANS WRITE 117 133Å: 85 Æà 118 ÓÔÁ ÆÌÁÇ ;SET FLAG BY MOVING ACC THERE 119 120 * THIS ROUTINE RESTORES THE POINTER TO THE BUFFER 121 * AREA TO THE START OF THE BUFFER EACH TIME 122 * THE ROUTINE IS CALLED 123 1340: ÁÄ ÄÁ 14 124 ÌÄÁ ÂÕÆÆÌÏ 1343: 85 ÆÁ 125 ÓÔÁ ÐÏÉÎÔÌÏ 1345: ÁÄ Ä 14 126 ÌÄÁ ÂÕÆÆÈÉ 1348: 85 Æ 127 ÓÔÁ ÐÏÉÎÔÈÉ 128 129 * CHECK FOR READ OR WRITE OPERATION 130 134Á: Á9 00 131 ÌÄÁ #$00 ;PUT ZERO IN ACC 134Ã: Ã5 Æà 132 ÃÍÐ ÆÌÁÇ ;COMPARE THE ZERO TO FLAG 134Å: Æ0 04 133 ÂÅÑ ÓÔÁÒÔ ;IF ZERO THEN START ROUTINE 1350: 20 Æ2 13 134 ÊÓÒ ÒÅÓÔÏÒÅ ;IF NOT RESTORE WINDOW CONTENTS 1353: 60 135 ÒÔÓ ;RETURN WHEN DONE RESTORING 136 137 * ÇET ÃHARACTER AND ÁTTRIBUTE STARTING ADDRESS 138 * ÔHIS IS THE ADDRESS OF THE HOME POSITION WITH 139 * A FULL WINDOW 140 1354: Á2 0à 141 ÓÔÁÒÔ ÌÄØ #$0à ;SELECT REGISTER 12 1356: 20 ÄÁ ÃÄ 142 ÊÓÒ ÒÅÁÄÒÅÇ ;READ HI BYTE OF CHAR ADDRESS 1359: 8Ä Ä0 14 143 ÓÔÁ ÃÈÁÒÈÉ ;STORE HI BYTE 135Ã: Á2 0Ä 144 ÌÄØ #$0Ä ;SELECT REGISTER 13 135Å: 20 ÄÁ ÃÄ 145 ÊÓÒ ÒÅÁÄÒÅÇ ;READ LO BYTE OF CHAR ADDRESS 1361: 8Ä Ä1 14 146 ÓÔÁ ÃÈÁÒÌÏ ;STORE LO BYTE 147 1364: Á2 14 148 ÌÄØ #$14 ;SELECT REGISTER 20 1366: 20 ÄÁ ÃÄ 149 ÊÓÒ ÒÅÁÄÒÅÇ ;READ HI BYTE OF ATTR ADDRESS 1369: 8Ä Ä2 14 150 ÓÔÁ ÁÔÔÒÈÉ ;STORE HI BYTE 136Ã: Á2 15 151 ÌÄØ #$15 ;SELECT REGISTER 21 136Å: 20 ÄÁ ÃÄ 152 ÊÓÒ ÒÅÁÄÒÅÇ ;READ LO BYTE OF ATTR ADDRESS 1371: 8Ä Ä3 14 153 ÓÔÁ ÁÔÔÒÌÏ ;STORE LO BYTE 154 155 * ÃOMPUTE STARTING ADDRESS OF CHARACTER AND ATTRIBUTE INFO 156 * FOR CURRENT WINDOW'S HOME POSITION 157 * ÔHIS SETS THE ADDRESSES TO THE START OF THE FIRST ROW 158 * OF THE WINDOW 159 1374: Á9 00 160 ÌÄÁ #$00 ;PUT ZERO IN ACCUMULATOR 1376: Ã5 Å5 161 ÃÍÐ ÓÃÔÏÐ ;IF SCREEN TOP EQUALS ZERO THEN 1378: Æ0 30 162 ÂÅÑ ÁÄÄÃÏÌ ;SKIP ROW INCREMENTING 163 137Á: Á2 00 164 ÌÄØ #$00 ;INITIALIZE COUNTER 137Ã: 18 165 ÃÈÁÒÒÏ× ÃÌà ;CLEAR CARRY 137Ä: ÁÄ Ä1 14 166 ÌÄÁ ÃÈÁÒÌÏ 1380: 69 50 167 ÁÄà #$50 ;ADD DECIMAL 80 FOR EACH ROW 1382: 8Ä Ä1 14 168 ÓÔÁ ÃÈÁÒÌÏ ;GREATER THAN 1 OF WINDOW 1385: ÁÄ Ä0 14 169 ÌÄÁ ÃÈÁÒÈÉ ;INCREMENT HI BYTE OF ADDRESS 1388: 69 00 170 ÁÄà #$00 ;IF CARRY SET 138Á: 8Ä Ä0 14 171 ÓÔÁ ÃÈÁÒÈÉ 138Ä: Å8 172 ÉÎØ ;INCREMENT COUNTER 138Å: Å4 Å5 173 ÃÐØ ÓÃÔÏÐ ;IF COUNTER DOES NOT EQUAL THE 1390: Ä0 ÅÁ 174 ÂÎÅ ÃÈÁÒÒÏ× ;SCREEN TOP VALUE THEN GO BACK 175 ;AND DO ANOTHER 176 1392: Á2 00 177 ÌÄØ #$00 ;RESET COUNTER 1394: 18 178 ÁÔÔÒÒÏ× ÃÌà 1395: ÁÄ Ä3 14 179 ÌÄÁ ÁÔÔÒÌÏ 1398: 69 50 180 ÁÄà #$50 139Á: 8Ä Ä3 14 181 ÓÔÁ ÁÔÔÒÌÏ 139Ä: ÁÄ Ä2 14 182 ÌÄÁ ÁÔÔÒÈÉ 13Á0: 69 00 183 ÁÄà #$00 13Á2: 8Ä Ä2 14 184 ÓÔÁ ÁÔÔÒÈÉ 13Á5: Å8 185 ÉÎØ 13Á6: Å4 Å5 186 ÃÐØ ÓÃÔÏÐ 13Á8: Ä0 ÅÁ 187 ÂÎÅ ÁÔÔÒÒÏ× 188 189 * ÔHIS SETS THE ADDRESSES TO THE CORRECT COLUMN 190 13ÁÁ: Á9 00 191 ÁÄÄÃÏÌ ÌÄÁ #$00 ;ZERO IN ACCUMULATOR 13ÁÃ: Ã5 Å6 192 ÃÍÐ ÓÃÌÆ ;IF SCREEN LEFT EQUALS ZERO 13ÁÅ: Æ0 22 193 ÂÅÑ ÓÉÚÅ ;THEN SKIP THIS ROUTINE 194 13Â0: 18 195 ÃÌà 13Â1: ÁÄ Ä1 14 196 ÌÄÁ ÃÈÁÒÌÏ ;GET LO BYTE 13Â4: 65 Å6 197 ÁÄà ÓÃÌÆ ;ADD COLUMN OFFSET 13Â6: 8Ä Ä1 14 198 ÓÔÁ ÃÈÁÒÌÏ ;STORE NEW ADDRESS 13Â9: ÁÄ Ä0 14 199 ÌÄÁ ÃÈÁÒÈÉ 13ÂÃ: 69 00 200 ÁÄà #$00 ;ADD CARRY IF SET 13ÂÅ: 8Ä Ä0 14 201 ÓÔÁ ÃÈÁÒÈÉ 13Ã1: 18 202 ÃÌà 13Ã2: ÁÄ Ä3 14 203 ÌÄÁ ÁÔÔÒÌÏ 13Ã5: 65 Å6 204 ÁÄà ÓÃÌÆ 13Ã7: 8Ä Ä3 14 205 ÓÔÁ ÁÔÔÒÌÏ 13ÃÁ: ÁÄ Ä2 14 206 ÌÄÁ ÁÔÔÒÈÉ 13ÃÄ: 69 00 207 ÁÄà #$00 13ÃÆ: 8Ä Ä2 14 208 ÓÔÁ ÁÔÔÒÈÉ 209 210 211 * ÄETERMINE SCREEN SIZE IN ROWS AND COLS 212 13Ä2: 20 5 Ãà 213 ÓÉÚÅ ÊÓÒ ÓÃÒÏÒÇ ;CALCULATE WINDOW SIZE 214 ;IN ROWS AND COLS 215 ;HAVE TO ADD 1 TO THE RESULT 216 ;BECAUSE THE ROW/COL #S 217 ;START WITH ZERO 13Ä5: Ã8 218 ÉÎÙ ; 13Ä6: 8à Ä7 14 219 ÓÔÙ ÈÅÉÇÈÔ ;STORE # OF ROWS 13Ä9: Å8 220 ÉÎØ ; 13ÄÁ: 8Å Ä6 14 221 ÓÔØ ×ÉÄÔÈ ;STORE # OF COLS 222 223 224 * SAVES WINDOW CONTENTS TO BUFFER 225 13ÄÄ: 20 07 14 226 ÓÁÖÅ ÊÓÒ ÉÎÉÔ ;CALL INIT TO ZERO COUNTERS 227 ;AND POINTERS 13Å0: 20 16 14 228 ÊÓÒ ÃÈÁÒ ;PUT ADDRESS OF CHAR INFO IN VDC 13Å3: 20 47 14 229 ÊÓÒ ÒÅÁÄ ;READ CHAR INFO 13Å6: Á9 00 230 ÌÄÁ #$00 ;RESET DONE FLAG FOR ATTRIBUTE 13Å8: 8Ä Äà 14 231 ÓÔÁ ÄÏÎÅ ;PASS THRU LOOP 13ÅÂ: 20 26 14 232 ÊÓÒ ÁÔÔÒ ;PUT ATTR ADDRESS INTO VDC 13ÅÅ: 20 47 14 233 ÊÓÒ ÒÅÁÄ ;READ ATTR INFO 13Æ1: 60 234 ÒÔÓ ;RETURN TO PROGRAM 235 236 * RESTORES WINDOW CONTENTS 237 13Æ2: 20 07 14 238 ÒÅÓÔÏÒÅ ÊÓÒ ÉÎÉÔ ;ALMOST THE SAME AS ÓÁÖÅ 13Æ5: 20 16 14 239 ÊÓÒ ÃÈÁÒ 13Æ8: 20 61 14 240 ÊÓÒ ×ÒÉÔÅ 13ÆÂ: Á9 00 241 ÌÄÁ #$00 13ÆÄ: 8Ä Äà 14 242 ÓÔÁ ÄÏÎÅ 1400: 20 26 14 243 ÊÓÒ ÁÔÔÒ 1403: 20 61 14 244 ÊÓÒ ×ÒÉÔÅ 1406: 60 245 ÒÔÓ 246 247 * INITIALIZES ROWCOUNT, COLCOUNT, AND BUFFER POINTER 248 1407: Á9 00 249 ÉÎÉÔ ÌÄÁ #$00 1409: 8Ä Ä8 14 250 ÓÔÁ ÒÏ×ÃÏÕÎÔ 140Ã: 8Ä Ä9 14 251 ÓÔÁ ÃÏÌÃÏÕÎÔ 140Æ: 8Ä Äà 14 252 ÓÔÁ ÄÏÎÅ 1412: Á5 ÆÁ 253 ÌÄÁ ÐÏÉÎÔÌÏ 1414: Á8 254 ÔÁÙ 1415: 60 255 ÒÔÓ 256 257 * PUTS CHAR ADDRESS INTO LOCATIONS USED 258 * BY READ/WRITE ROUTINES 259 1416: ÁÄ Ä0 14 260 ÃÈÁÒ ÌÄÁ ÃÈÁÒÈÉ 1419: 8Ä Ä4 14 261 ÓÔÁ ÖÄÃÈÉ 141Ã: ÁÄ Ä1 14 262 ÌÄÁ ÃÈÁÒÌÏ 141Æ: 8Ä Ä5 14 263 ÓÔÁ ÖÄÃÌÏ 1422: 20 36 14 264 ÊÓÒ ÕÐÄÁÔÅ 1425: 60 265 ÒÔÓ 266 267 * PUTS ATTR ADDRESS INTO LOCATIONS USED 268 * BY READ/WRITE ROUTINES 269 1426: ÁÄ Ä2 14 270 ÁÔÔÒ ÌÄÁ ÁÔÔÒÈÉ 1429: 8Ä Ä4 14 271 ÓÔÁ ÖÄÃÈÉ 142Ã: ÁÄ Ä3 14 272 ÌÄÁ ÁÔÔÒÌÏ 142Æ: 8Ä Ä5 14 273 ÓÔÁ ÖÄÃÌÏ 1432: 20 36 14 274 ÊÓÒ ÕÐÄÁÔÅ 1435: 60 275 ÒÔÓ 276 277 * SEND ADDRESS CONTAINED IN 278 * VDCHI AND VDCLO TO VDC 279 * REGISTERS 18 AND 19 280 1436: Á2 12 281 ÕÐÄÁÔÅ ÌÄØ #$12 ;REG 18 1438: ÁÄ Ä4 14 282 ÌÄÁ ÖÄÃÈÉ 143Â: 20 Ãà ÃÄ 283 ÊÓÒ ×ÒÉÔÅÒÅÇ 143Å: Á2 13 284 ÌÄØ #$13 ;REG 19 1440: ÁÄ Ä5 14 285 ÌÄÁ ÖÄÃÌÏ 1443: 20 Ãà ÃÄ 286 ÊÓÒ ×ÒÉÔÅÒÅÇ 1446: 60 287 ÒÔÓ 288 289 * READS THE VDC INFO INTO THE BUFFER AREA 290 1447: Á2 1Æ 291 ÒÅÁÄ ÌÄØ #$1Æ ;SET REG 31 1449: 20 ÄÁ ÃÄ 292 ÊÓÒ ÒÅÁÄÒÅÇ ;GET VALUE FROM VDC RAM INTO ACC 144Ã: Á2 ÆÁ 293 ÌÄØ #ÐÏÉÎÔÌÏ ;PUT POINTER IN X REG 144Å: 8Å Â9 02 294 ÓÔØ $2Â9 ;MOVE POINTER 1451: Á2 01 295 ÌÄØ #$01 ;BANK NUMBER 1453: 20 77 ÆÆ 296 ÊÓÒ ÓÔÁÌÏÎÇ ;PUT BYTE THERE 297 1456: 20 78 14 298 ÊÓÒ ÔÅÓÔ ;GO DO OUR HOUSEKEEPING 299 1459: Á9 01 300 ÌÄÁ #$01 ;TEST TO SEE IF WE ARE THRU 145Â: ÃÄ Äà 14 301 ÃÍÐ ÄÏÎÅ ; 145Å: Ä0 Å7 302 ÂÎÅ ÒÅÁÄ ;IF NOT GO GET ANOTHER BYTE 1460: 60 303 ÒÔÓ ;IF THRU GO BACK 304 305 306 * WRITES THE BUFFER BACK INTO THE VDC 307 1461: Á9 ÆÁ 308 ×ÒÉÔÅ ÌÄÁ #ÐÏÉÎÔÌÏ ;SAME LOGIC AS ÒÅÁÄ 1463: Á2 01 309 ÌÄØ #$01 ;EXCEPT THAT WE ARE SENDING DATA 1465: 20 74 ÆÆ 310 ÊÓÒ ÌÄÁÌÏÎÇ ;TO THE VDC 1468: Á2 1Æ 311 ÌÄØ #$1Æ 146Á: 20 Ãà ÃÄ 312 ÊÓÒ ×ÒÉÔÅÒÅÇ 313 146Ä: 20 78 14 314 ÊÓÒ ÔÅÓÔ 315 1470: Á9 01 316 ÌÄÁ #$01 1472: ÃÄ Äà 14 317 ÃÍÐ ÄÏÎÅ 1475: Ä0 ÅÁ 318 ÂÎÅ ×ÒÉÔÅ 1477: 60 319 ÒÔÓ 320 321 * PREFORMS CHECKS FOR THE ÒÅÁÄ AND ×ÒÉÔÅ ROUTINES 322 1478: Ã8 323 ÔÅÓÔ ÉÎÙ ;INCREMENT POINTER 1479: ÅÅ Ä9 14 324 ÉÎà ÃÏÌÃÏÕÎÔ ;INCREMENT COLUMN COUNT 147Ã: Ãà ÄÁ 14 325 ÃÐÙ ÂÕÆÆÌÏ ;HAS Y ROLLED OVER TO = BUFFLO? 147Æ: Ä0 02 326 ÂÎÅ :ÅÎÄÒÏ× ;IF NOT GOTO END OF ROW CHECK 1481: Å6 Æ 327 ÉÎà $Æ ;IF Y HAS ROLLED OVER, THEN 328 ;WE INCREMENT THE HI BYTE 329 ;OF THE POINTER 330 1483: ÁÄ Ä6 14 331 :ÅÎÄÒÏ× ÌÄÁ ×ÉÄÔÈ ;PUT WIDTH IN ACC 1486: ÃÄ Ä9 14 332 ÃÍÐ ÃÏÌÃÏÕÎÔ ;COMPARE WITH WIDTH 1489: Ä0 24 333 ÂÎÅ :ÒÅÔÕÒÎ ;IF NOT DONE WITH THIS ROW 334 ;THEN GO BACK AND GET ANOTHER 335 ;CHARACTER 336 148Â: ÅÅ Ä8 14 337 ÉÎà ÒÏ×ÃÏÕÎÔ ;IF IT FALLS THRU THE ROW IS DONE 148Å: ÁÄ Ä7 14 338 ÌÄÁ ÈÅÉÇÈÔ ;PUT HEIGHT IN ACC 1491: ÃÄ Ä8 14 339 ÃÍÐ ÒÏ×ÃÏÕÎÔ ;COMPARE WITH ROWCOUNT 1494: Æ0 1Á 340 ÂÅÑ :ÅØÉÔ ;IF EQUAL WE ARE DONE 341 1496: Á9 00 342 ÌÄÁ #$00 ;WE WEREN'T DONE SO WE 1498: 8Ä Ä9 14 343 ÓÔÁ ÃÏÌÃÏÕÎÔ ;HAVE TO RESET THE COLUMN COUNT 344 149Â: 18 345 ÃÌà ;AND INCREMENT THE ADDRESS WE ARE 149Ã: Á9 50 346 ÌÄÁ #$50 ;WE ARE READING FROM BY 80 149Å: 6Ä Ä5 14 347 ÁÄà ÖÄÃÌÏ 14Á1: 8Ä Ä5 14 348 ÓÔÁ ÖÄÃÌÏ 14Á4: Á9 00 349 ÌÄÁ #$00 14Á6: 6Ä Ä4 14 350 ÁÄà ÖÄÃÈÉ 14Á9: 8Ä Ä4 14 351 ÓÔÁ ÖÄÃÈÉ 14ÁÃ: 20 36 14 352 ÊÓÒ ÕÐÄÁÔÅ ;SEND THE NEXT ROWS START ADDRESS 353 ;TO THE VDC CHIP 354 14ÁÆ: 60 355 :ÒÅÔÕÒÎ ÒÔÓ ;GO BACK FOR ANOTHER ROW 356 14Â0: Á9 00 357 :ÅØÉÔ ÌÄÁ #$00 ;RESET THE COUNTERS TO ZERO 14Â2: 8Ä Ä8 14 358 ÓÔÁ ÒÏ×ÃÏÕÎÔ ;OR ELSE WHE WE COME BACK 14Â5: 8Ä Ä9 14 359 ÓÔÁ ÃÏÌÃÏÕÎÔ ;WE WILL KEEP READING 360 ;TIL THE COUNT WRAPS BACK 361 14Â8: Á9 01 362 ÌÄÁ #$01 ;PUT A ONE IN ÄÏÎÅ SO 14ÂÁ: 8Ä Äà 14 363 ÓÔÁ ÄÏÎÅ ;WE CAN TEST TO SEE IF WE FINISHED 364 ;THIS PASS 14ÂÄ: 60 365 ÒÔÓ ;GO BACK 14ÂÅ: ÅÁ 366 ÎÏÐ 14ÂÆ: ÅÁ 367 ÎÏÐ 14Ã0: ÅÁ 368 ÎÏÐ 369 370 * RESETS ÖÄà CONFIGURATION FOR 64Ë MEMORY 371 * CALL WITH SYS 5313 372 14Ã1: Á2 1à 373 ÌÄØ #$1à ;SET REG 28 14Ã3: 20 ÄÁ ÃÄ 374 ÊÓÒ ÒÅÁÄÒÅÇ ;READ CURRENT VALUE 14Ã6: 09 10 375 ÏÒÁ #$10 ;SET BIT 4, IF NOT SET ALREADY 14Ã8: 20 Ãà ÃÄ 376 ÊÓÒ ×ÒÉÔÅÒÅÇ ;WRITE IT BACK 14ÃÂ: 20 0à ÃÅ 377 ÊÓÒ ÉÎÉÔ80 ;REINITIALIZE CHARACTER SET 14ÃÅ: 60 378 ÒÔÓ 379 380 * DATA STORAGE 381 382 ÄÁÔÁ 383 384 ÄÕÍ ÄÁÔÁ ;DATA LOCATIONS 385 14ÃÆ: 00 386 ÓÃÁÄÄÒ ÄÆ 0 14Ä0: 00 387 ÃÈÁÒÈÉ ÄÆ 0 14Ä1: 00 388 ÃÈÁÒÌÏ ÄÆ 0 14Ä2: 00 389 ÁÔÔÒÈÉ ÄÆ 0 14Ä3: 00 390 ÁÔÔÒÌÏ ÄÆ 0 14Ä4: 00 391 ÖÄÃÈÉ ÄÆ 0 14Ä5: 00 392 ÖÄÃÌÏ ÄÆ 0 14Ä6: 00 393 ×ÉÄÔÈ ÄÆ 0 14Ä7: 00 394 ÈÅÉÇÈÔ ÄÆ 0 14Ä8: 00 395 ÒÏ×ÃÏÕÎÔ ÄÆ 0 14Ä9: 00 396 ÃÏÌÃÏÕÎÔ ÄÆ 0 14ÄÁ: 00 397 ÂÕÆÆÌÏ ÄÆ 0 14ÄÂ: 00 398 ÂÕÆÆÈÉ ÄÆ 0 14ÄÃ: 00 399 ÄÏÎÅ ÄÆ 0 400 401 ÄÅÎÄ --ÅND ÍERLIN-128 ASSEMBLY, 463 BYTES, ÅRRORS: 0 ÓYMBOL TABLE - ALPHABETICAL ORDER: ÁÄÄÃÏÌ =$13ÁÁ ÁÔÔÒ =$1426 ÁÔÔÒÈÉ =$14Ä2 ÁÔÔÒÌÏ =$14Ä3 ÁÔÔÒÒÏ× =$1394 ÂÕÆÆÈÉ =$14Ä ÂÕÆÆÌÏ =$14ÄÁ ÃÈÁÒ =$1416 ÃÈÁÒÈÉ =$14Ä0 ÃÈÁÒÌÏ =$14Ä1 ÃÈÁÒÒÏ× =$137à ÃÌÒ =$51Æ8 ÃÏÌÃÏÕÎÔ=$14Ä9 ÄÁÔÁ =$14ÃÆ ÄÏÎÅ =$14Äà ÆÌÁÇ =$Æà ÈÅÉÇÈÔ =$14Ä7 ÉÎÉÔ =$1407 ÉÎÉÔ80 =$ÃÅ0à ÌÄÁÌÏÎÇ =$ÆÆ74 ÐÏÉÎÔÈÉ =$Æ ÐÏÉÎÔÌÏ =$ÆÁ ÒÅÁÄ =$1447 ÒÅÁÄÒÅÇ =$ÃÄÄÁ ÒÅÓÔÏÒÅ =$13Æ2 ÒÏ×ÃÏÕÎÔ=$14Ä8 ? ÓÁÖÅ =$13ÄÄ ÓÃÁÄÄÒ =$14ÃÆ ÓÃÌÆ =$Å6 ÓÃÒÏÒÇ =$ÃÃ5 ÓÃÔÏÐ =$Å5 ÓÉÚÅ =$13Ä2 ÓÔÁÌÏÎÇ =$ÆÆ77 ÓÔÁÒÔ =$1354 ÔÅÓÔ =$1478 ÕÐÄÁÔÅ =$1436 ÖÄÃÈÉ =$14Ä4 ÖÄÃÌÏ =$14Ä5 ÖÍ3 =$0Á2Å ÖÍ4 =$0Á2Æ ×ÉÄÔÈ =$14Ä6 ×ÒÉÔÅ =$1461 ×ÒÉÔÅÒÅÇ=$ÃÄÃà ÓYMBOL TABLE - NUMERICAL ORDER: ÓÃÔÏÐ =$Å5 ÓÃÌÆ =$Å6 ÐÏÉÎÔÌÏ =$ÆÁ ÐÏÉÎÔÈÉ =$Æ ÆÌÁÇ =$Æà ÖÍ3 =$0Á2Å ÖÍ4 =$0Á2Æ ÓÔÁÒÔ =$1354 ÃÈÁÒÒÏ× =$137à ÁÔÔÒÒÏ× =$1394 ÁÄÄÃÏÌ =$13ÁÁ ÓÉÚÅ =$13Ä2 ? ÓÁÖÅ =$13ÄÄ ÒÅÓÔÏÒÅ =$13Æ2 ÉÎÉÔ =$1407 ÃÈÁÒ =$1416 ÁÔÔÒ =$1426 ÕÐÄÁÔÅ =$1436 ÒÅÁÄ =$1447 ×ÒÉÔÅ =$1461 ÔÅÓÔ =$1478 ÄÁÔÁ =$14ÃÆ ÓÃÁÄÄÒ =$14ÃÆ ÃÈÁÒÈÉ =$14Ä0 ÃÈÁÒÌÏ =$14Ä1 ÁÔÔÒÈÉ =$14Ä2 ÁÔÔÒÌÏ =$14Ä3 ÖÄÃÈÉ =$14Ä4 ÖÄÃÌÏ =$14Ä5 ×ÉÄÔÈ =$14Ä6 ÈÅÉÇÈÔ =$14Ä7 ÒÏ×ÃÏÕÎÔ=$14Ä8 ÃÏÌÃÏÕÎÔ=$14Ä9 ÂÕÆÆÌÏ =$14ÄÁ ÂÕÆÆÈÉ =$14Ä ÄÏÎÅ =$14Äà ÃÌÒ =$51Æ8 ÓÃÒÏÒÇ =$ÃÃ5 ×ÒÉÔÅÒÅÇ=$ÃÄÃà ÒÅÁÄÒÅÇ =$ÃÄÄÁ ÉÎÉÔ80 =$ÃÅ0à ÌÄÁÌÏÎÇ =$ÆÆ74 ÓÔÁÌÏÎÇ =$ÆÆ77